package org.zmhhxl.sample3.oauth2.a.service;


import org.zmhhxl.api.auth.domain.entity.ThirdPartyUser;
import org.zmhhxl.sample3.oauth2.a.authentications.model.CustomOAuth2User;

import java.util.Optional;

/**
 * <p>
 * 三方登录账户信息表 服务类
 * </p>
 *
 * @author vains
 * @since 2023-07-04
 */
public interface IOauth2ThirdAccountService {
   /**
    * 检查是否存在该用户信息，不存在则保存，
    * 暂时不做关联基础用户信息，由前端引导完善/关联基础用户信息
    * 如果没有关联用户信息，会自动分配一个临时账号(thirdUsername)
    * 可以通过返回值 userInfo->userId 绑定用户信息，或者返回用户信息，由前端引导完善关联基础用户信息
    *
    * @param basicOauth2User 用户信息
    */
   Optional<ThirdPartyUser> checkAndSaveUser(CustomOAuth2User basicOauth2User);

   Optional<ThirdPartyUser> findByThirdPartyIdAndThirdPartyDomain(String Id, String domain);

   Optional<ThirdPartyUser> findById( Long id);

   Optional<Long> findUserIdById( Long id);

}
